package com.bedrock.project.inside.entity;

import com.bedrock.framework.aspectj.lang.annotation.Excel;
import com.bedrock.framework.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;

/**
 * 工时填报对象 work_hour
 */
@Data
@ApiModel("工时实体")
public class WorkHour extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 工时id */
    @ApiModelProperty(name = "workHourId",value = "工时id",notes = "返回工时id")
    private Long workHourId;

    /** 用户id */
    @ApiModelProperty("用户ID")
    @Excel(name = "用户id")
    private Long userId;

    /** 项目名字 */
    @ApiModelProperty("项目Id")
    @NotNull(message = "项目不能为空")
    @Excel(name = "项目Id")
    private Long projectId;

    /** 项目名字 */
    @ApiModelProperty("项目名字")
    @Excel(name = "项目名字")
    private String projectName;

    /** 负责人id */
    @ApiModelProperty("负责人Id")
    @Excel(name = "负责人id")
    private Long principalId;

    /** 负责人姓名 */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名")
    private String principalName;

    /** 工时分类，1=后台，2=前端，3=UI，4=产品，5=测试 */
    @Excel(name = "工时分类，1=后台，2=前端，3=UI，4=产品，5=测试")
    private String workType;

    @ApiModelProperty("工时分类一级名称")
    @Excel(name = "工时分类一级")
    private String workTypeFirst;

    @ApiModelProperty("工时分类一级Id")
    private String workTypeFirstId;

    @ApiModelProperty("工时分类二级名称")
    @Excel(name = "工时分类二级")
    @NotNull(message = "工时分类二级不能为空")
    private String workTypeSecond;

    @ApiModelProperty("工时分类二级Id")
    @NotNull(message = "工时分类二级不能为空")
    private String workTypeSecondId;

    /** 工时层级，1=立项项目，2=非立项项目，3=组织级工时 */
    @ApiModelProperty("工时层级，1=立项项目，2=非立项项目，3=组织级工时")
    @Excel(name = "工时层级，1=立项项目，2=非立项项目，3=组织级工时")
    @NotNull(message = "工时层级不能为空")
    private String projectType;

    /** 日期 */
    @ApiModelProperty("工时日期")
    @Excel(name = "日期", width = 30, dateFormat = "yyyy-MM-dd")
    @NotNull(message ="工时日期不能为空")
    private Date startDate;

    /** 是否内部（0是 1不是） */
    @ApiModelProperty("否内部（0是 1不是）")
    @Excel(name = "是否内部", readConverterExp = "0=是,1=不是")
    private String inside;

    /** 开始时间 */
    @ApiModelProperty("开始时间")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @NotNull(message ="工时开始时间不能为空")
    private String startTime;

    /** 结束时间 */
    @ApiModelProperty("结束时间")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    @NotNull(message ="工时结束不能为空")
    private String endTime;

    /** 工时 */
    @ApiModelProperty("工时")
    @Excel(name = "工时")
    private float workHourCount;

    /** 任务描述 */
    @ApiModelProperty("任务描述")
    @Excel(name = "任务描述")
    @Size(min = 0,max = 4000,message = "任务描述字符长度不能大于4000")
    @NotNull(message ="任务描述不能为空")
    private String workDesc;

    /** 工时发送状态 */
    @ApiModelProperty("工时发送状态")
    @Excel(name = "工时发送状态")
    private String workStatus;

    /** 状态（0正常 1停用） */
    @ApiModelProperty("状态（0正常 1停用）")
    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
    private String status;

    /** 销售员姓名 */
    @ApiModelProperty("销售员姓名")
    @Excel(name = "销售员姓名")
    private String salemanName;

    /** 用户名 */
    @ApiModelProperty("用户名")
    @Excel(name = "用户名")
    private String userName;

    /** 用户昵称 */
    @ApiModelProperty("用户昵称")
    @Excel(name = "用户昵称")
    private String nickName;

    /** 是否立项 0:是;1:否;2:内部 */
    @ApiModelProperty("是否立项 0:是;1:否;2:内部")
    @Excel(name = "是否立项 0:是;1:否;2:内部")
    private Integer approval;

}
